{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction to QRenderers\n",
    "\n",
    "For convenience, let's begin by enabling [automatic reloading of modules](https://ipython.readthedocs.io/en/stable/config/extensions/autoreload.html?highlight=autoreload) when they change."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Import Qiskit Metal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import qiskit_metal as metal\n",
    "from qiskit_metal import designs, draw\n",
    "from qiskit_metal import MetalGUI, Dict, Headings\n",
    "\n",
    "from qiskit_metal.qlibrary.qubits.transmon_pocket import TransmonPocket\n",
    "from qiskit_metal.qlibrary.qubits.transmon_cross import TransmonCross\n",
    "\n",
    "from qiskit_metal.renderers.renderer_gds.gds_renderer import QGDSRenderer "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Headings.h1('The default_options in a QComponent are different than the default_options in QRenderers.')\n"
   ]
  },
  {
   "attachments": {
    "a3b155b8-23ee-493a-b9d2-40e2d51aef9b.jpg": {
     "image/jpeg": "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TcR/NH8f8j8XKK/aP/hjL9nD/oV5v/Btqf8A8lUf8MZfs4f9CvN/4NtT/wDkqj/iKeB/59z/AA/zD/U3EfzR/H/I/Fyiv2j/AOGMv2cP+hXm/wDBtqf/AMlUf8MZfs4f9CvN/wCDbU//AJKo/wCIp4H/AJ9z/D/MP9TcR/NH8f8AI/Fyiv2j/wCGMv2cP+hXm/8ABtqf/wAlUf8ADGX7OH/Qrzf+DbU//kqj/iKeB/59z/D/ADD/AFNxH80fx/yPxcor9o/+GMv2cP8AoV5v/Btqf/yVR/wxl+zh/wBCvN/4NtT/APkqj/iKeB/59z/D/MP9TcR/NH8f8j8XKK/aP/hjL9nD/oV5v/Btqf8A8lUf8MZfs4f9CvN/4NtT/wDkqj/iKeB/59z/AA/zD/U3EfzR/H/I/Fyu5+Fv/JVvAf8A2Mei/wDpfBX61f8ADGX7OH/Qrzf+DbU//kqtLRf2SfgB4f1nT/EGk+GpYr/SrmG7tnbU9QkCT27iSNtklyyNtdQcMCDjkGuXG+JmCq0Z01Tldprp1XqbYfhHEQqRm5R0a7/5H0fRRRX4ifoYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/Q/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//R/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//S/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![QDesign Data Flow_accurate.jpg](attachment:a3b155b8-23ee-493a-b9d2-40e2d51aef9b.jpg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "TransmonPocket.default_options\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "QGDSRenderer.default_options"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### A renderer needs to inherent from QRenderer\n",
    "For Example, QGDSRender inherents from QRenderer.\n",
    "\n",
    "When any QRenderer is registered within QDesign, the QRenderer instance has options, which hold the latest set of values for default_options.  The GUI can also update these options. \n",
    "\n",
    "An example of updating options is further below in this notebook.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### A user can customize things two ways\n",
    "\n",
    "1.  Directly update the options that originated from default_options, for either QComponent or QRenderer.\n",
    "\n",
    "2.  Pass options to a QComponent which will be placed in a QGeometry table, then used by QRenderer."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### How to get options from QRenderer to be placed within the QGeometry table?\n",
    "We set this up so that older QComponents can be agnostic of newer QRenderers. \n",
    "\n",
    "The \"rate limiting factor\" is to have QComponent denote in it's metadata, which QGeometry tables it will write to.  For this example, we will discuss the \"junction\" table.  More details will be in the notebook at \"tutorials/4 Plugin Developer\".  \n",
    "If the QComponent identifies the table which it is aware of, and if QGDSRenderer wants to add a column to the table with a default value, then QComponent will pass the option from QGDSRenderer to QGeometry table without doing anything with it.\n",
    "\n",
    "An example of this below is `gds_cell_name='FakeJunction_01'`.  This is passed through to QGeometry, when a QComponent is instantiated.  The QGDSRenderer has a default, which is not editable during run-time, but can be customized when a QComponent is instantiated.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Headings.h1('How does a QRenderer get registered within QDesign?')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### By default, QRenderers are registered within QDesign during init QDesign\n",
    "The list of QRenderers which will be registered are in qiskit_metal.config.py;   \n",
    "the dictionary `renderers_to_load` has the name of the QRenderer (key), class name (value), and path (value).\n",
    "\n",
    "Presently, GDS and Ansys QRenderers are registered during init.  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "design = designs.DesignPlanar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use GDS QRenderer for remaining examples.  Can do similar things with Ansys QRenderer.\n",
    "\n",
    "#an_ansys = design._renderers['ansys']\n",
    "#an_ansys = design._renderers.ansys\n",
    "\n",
    "#a_gds = design._renderers['gds']\n",
    "a_gds = design._renderers.gds\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "gui = MetalGUI(design)\n",
    "design.overwrite_enabled = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Headings.h1('Populate QDesign to demonstrate exporting to GDS format.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_metal.qlibrary.qubits.transmon_pocket import TransmonPocket\n",
    "\n",
    "# Allow running the same cell here multiple times to overwrite changes\n",
    "design.overwrite_enabled = True\n",
    "\n",
    "## Custom options for all the transmons\n",
    "options = dict(\n",
    "    # Some options we want to modify from the deafults\n",
    "    # (see below for defaults)\n",
    "    pad_width = '425 um',\n",
    "    pad_gap = '80 um',\n",
    "    pocket_height = '650um',\n",
    "    # Adding 4 connectors (see below for defaults)\n",
    "    connection_pads=dict( \n",
    "        a = dict(loc_W=+1,loc_H=+1), \n",
    "        b = dict(loc_W=-1,loc_H=+1, pad_height='30um'),\n",
    "        c = dict(loc_W=+1,loc_H=-1, pad_width='200um'),\n",
    "        d = dict(loc_W=-1,loc_H=-1, pad_height='50um')\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Note:  \n",
    "The cell name denoted by, \"gds_cell_name\" will be the selected cell   \n",
    "from design.renderers.gds.options['path_filename']   \n",
    "when design.renderers.gds.export_to_gds() is executed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Create 4 TransmonPockets\n",
    "\n",
    "q1 = TransmonPocket(design, 'Q1', options = dict(\n",
    "    pos_x='+2.55mm', pos_y='+0.0mm', gds_cell_name='FakeJunction_02', **options))\n",
    "q2 = TransmonPocket(design, 'Q2', options = dict(\n",
    "    pos_x='+0.0mm', pos_y='-0.9mm', orientation = '90', gds_cell_name='FakeJunction_02', **options))\n",
    "q3 = TransmonPocket(design, 'Q3', options = dict(\n",
    "    pos_x='-2.55mm', pos_y='+0.0mm', gds_cell_name='FakeJunction_01',**options))\n",
    "q4 = TransmonPocket(design, 'Q4', options = dict(\n",
    "    pos_x='+0.0mm', pos_y='+0.9mm', orientation = '90', gds_cell_name='my_other_junction', **options))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "## Rebuild the design\n",
    "gui.rebuild()\n",
    "gui.autoscale()\n",
    "\n",
    "#Connect using techniques explained earlier notebooks.\n",
    "\n",
    "from qiskit_metal.qlibrary.tlines.meandered import RouteMeander\n",
    "RouteMeander.get_template_options(design)\n",
    "\n",
    "options = Dict(\n",
    "    meander=Dict(\n",
    "        lead_start='0.1mm',\n",
    "        lead_end='0.1mm',\n",
    "        asymmetry='0 um')\n",
    ")\n",
    "\n",
    "\n",
    "def connect(component_name: str, component1: str, pin1: str, component2: str, pin2: str,\n",
    "            length: str, asymmetry='0 um', flip=False, fillet='50um'):\n",
    "    \"\"\"Connect two pins with a CPW.\"\"\"\n",
    "    myoptions = Dict(\n",
    "        fillet=fillet,\n",
    "        pin_inputs=Dict(\n",
    "            start_pin=Dict(\n",
    "                component=component1,\n",
    "                pin=pin1),\n",
    "            end_pin=Dict(\n",
    "                component=component2,\n",
    "                pin=pin2)),\n",
    "        lead=Dict(\n",
    "            start_straight='0.13mm',\n",
    "            end_straight='0.13mm'\n",
    "        ),\n",
    "        total_length=length)\n",
    "    myoptions.update(options)\n",
    "    myoptions.meander.asymmetry = asymmetry\n",
    "    myoptions.meander.lead_direction_inverted = 'true' if flip else 'false'\n",
    "    return RouteMeander(design, component_name, myoptions)\n",
    "\n",
    "\n",
    "asym = 90\n",
    "cpw1 = connect('cpw1', 'Q1', 'd', 'Q2', 'c', '5.7 mm', f'+{asym}um', fillet='25um')\n",
    "cpw2 = connect('cpw2', 'Q3', 'c', 'Q2', 'a', '5.4 mm', f'-{asym}um', flip=True, fillet='100um')\n",
    "cpw3 = connect('cpw3', 'Q3', 'a', 'Q4', 'b', '5.3 mm', f'+{asym}um', fillet='75um')\n",
    "cpw4 = connect('cpw4', 'Q1', 'b', 'Q4', 'd', '5.5 mm', f'-{asym}um', flip=True)\n",
    "\n",
    "gui.rebuild()\n",
    "gui.autoscale()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Headings.h1('Exporting a GDS file.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "#QDesign enables GDS renderer during init.\n",
    "a_gds = design.renderers.gds\n",
    "# An alternate way to envoke the gds commands without using a_gds:\n",
    "# design.renderers.gds.export_to_gds()\n",
    "\n",
    "#Show the options for GDS\n",
    "a_gds.options"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  To make the junction table work correctly, GDS Renderer needs the correct path to the gds file which has cells\n",
    "Each cell is a junction to be placed in a Transmon.  A sample gds file is provided in directory `qiskit_metal/tutorials/resources`.\n",
    "There are three cells with names \"Fake_Junction_01\", \"Fake_Junction_01\", and \"my_other_junction\".\n",
    "The default name used by GDS Render is \"my_other_junction\".  If you want to customize and select a junction, through the options, \n",
    "you can pass it when a qcomponent is being added to QDesign. \n",
    "\n",
    "This allows for an already prepared e-beam pattern for a given junction structure to be automatically imported and placed at the correct\n",
    "location."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "a_gds.options['path_filename'] = '../resources/Fake_Junctions.GDS'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Do you want GDS Renderer to fix any short-segments in your QDesign when using fillet?'\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#If you have a fillet_value and there are LineSegments that are shorter than 2*fillet_value, \n",
    "#When true, the short segments will not be fillet'd. \n",
    "a_gds.options['short_segments_to_not_fillet'] = 'True'\n",
    "scale_fillet = 2.0\n",
    "a_gds.options['check_short_segments_by_scaling_fillet'] = scale_fillet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Export GDS file for all components in design.\n",
    "#def export_to_gds(self, file_name: str, highlight_qcomponents: list = []) -> int:\n",
    "\n",
    "\n",
    "# Please change the path where you want to write a GDS file.\n",
    "#Examples below.  \n",
    "#a_gds.export_to_gds(\"../../../gds-files/GDS QRenderer Notebook.gds\")\n",
    "\n",
    "a_gds.export_to_gds('GDS QRenderer Notebook.gds')\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Export a GDS file which contains only few components.\n",
    "\n",
    "# You will probably want to put the exported file in a specific directory.  \n",
    "# Please give the full path for output. \n",
    "a_gds.export_to_gds(\"four_qcomponents.gds\",\n",
    "                           highlight_qcomponents=['cpw1', 'cpw4', 'Q1', 'Q3'])\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How to \"execute\" exporting an QRenderer from GUI vs notebook?\n",
    "Within the GUI, there are icons: GDS, HFSS and Q3D.\n",
    "\n",
    "Example for GDS:\n",
    "Select the components that you want to export from QGeometry Tables. Select the path/file_name and the same thing should happen as the cells above.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Headings.h1('QUESTION:  Where is the geometry of a QComponent placed?')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Answer:  QGeometry tables!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## What is QGeometry? \n",
    "\n",
    "###  All QRenderers use the QGeometry tables to export from QDesign.  Each table is a Pandas DataFrame.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can get all the QGeometry of a QComponent. There are several kinds, such as `path`, `poly` and, `junction`. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Many ways to view the QGeometry tables.  \n",
    "#If you want to view, uncomment below lines and and run it.\n",
    "\n",
    "#design.qgeometry.tables\n",
    "#design.qgeometry.tables['path']\n",
    "#design.qgeometry.tables['poly']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "design.qgeometry.tables['junction']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let us look at all the polygons used to create qubit `q1`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Poly table hold the polygons identified from QComponents."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "q1.qgeometry_table('poly')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Paths are lines. These can have a width."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "q1.qgeometry_table('path')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The junction table is handled differently by each QRenderer.\n",
    "\n",
    "###  What does GDS do with \"junction\" table?\n",
    "This is better explained in folder 5 All QRenderers/5.2 GDS/GDS QRenderer  notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "q1.qgeometry_table('junction')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Geometric boundary of a QComponent?\n",
    "Return the boundry box of the geometry, for example: `q1.qgeometry_bounds()`.  \n",
    "The function returns a tuple containing (minx, miny, maxx, maxy) bound values\n",
    "for the bounds of the component as a whole."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "for name, qcomponent in design.components.items():\n",
    "    print(f\"{name:10s} : {qcomponent.qgeometry_bounds()}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Qiskit Metal Version"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "metal.about();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# gui.main_window.close()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
